package com.gostudy.common.valid;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;
import java.util.Set;

/**
 * @program: gulimall
 * @description:
 * @author: 53Hertz
 * @create: 2021-04-08 13:13
 **/

public class ListValueConstraintValidator implements ConstraintValidator<ListValue,Integer> {
    private Set<Integer> set = new HashSet<>();
    /*
    初始化信息，会把注解的信息传到这里来
     */
    @Override
    public void initialize(ListValue constraintAnnotation) {
        /*
        表示我们给定的值必须是这个数组里的值
         */
        int[] vals = constraintAnnotation.vals();
        for (int val : vals) {
            set.add(val);
        }
    }

    /*
    判断是否校验成功 value 为我们传过来的值，应该判断此值是否等于上面数组里的值
     */
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {
        /*
        如果数组里包含我们提交的值则返回true
         */
        return set.contains(value);
    }
}
